package com.gpframework.module.order.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.gpframework.module.order.domain.GpFlowConfig;
import com.gpframework.module.order.domain.req.GpProductAdd;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import com.gpframework.common.annotation.Excel;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName GpOrderVo
 * @Author gpframework
 * @Date 2023-06-16
 * @Version 1.0.0
 * @Description 销售单Vo对象
 */
@Data
@ToString
@EqualsAndHashCode
@NoArgsConstructor
@Accessors(chain = true)
public class GpOrderVo {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @ApiModelProperty("${column.columnComment}")
    private Long id;

    /** 品牌id */
    @ApiModelProperty("品牌id")
    private String brandId;

    /** 品牌名称 */
    @ApiModelProperty("品牌名称")
    private String brandName;

    /** 上级id */
    @ApiModelProperty("上级id")
    private Long parentId;

    /** 订单特性(大货/散剪) */
    @Excel(name = "订单特性", sort = 30, dictType = "order_characteristics")
    @ApiModelProperty("订单特性(大货/散剪)")
    private String orderCharacteristics;

    /** 订单状态 */
    @Excel(name = "订单状态", sort = 40, dictType = "order_status")
    @ApiModelProperty("订单状态")
    private String orderStatus;

    /** 订单二维码 */
    @ApiModelProperty("订单二维码")
    private String orderQrCode;

    /** 流入时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("流入时间")
    private Date flowInTime;

    /** 订单时长 */
    @Excel(name = "订单时长", sort = 110)
    @ApiModelProperty("订单时长")
    private Long orderDuration;

    /** 工作量 */
    @Excel(name = "工作量", sort = 120)
    @ApiModelProperty("工作量")
    private BigDecimal workload;

    /** 超期时长 */
    @ApiModelProperty("超期时长")
    private Long overdueDuration;

    /** 是否打印二维码 */
    @ApiModelProperty("是否打印二维码")
    private Integer isPrintQrCode;

    /** 是否异常 */
    @ApiModelProperty("是否异常")
    private Integer isException;

    /** 异常类型： 1欠货 2等通知 3今日到货 */
    @ApiModelProperty("异常类型： 1欠货 2等通知 3今日到货")
    private String exceptionType;

    /** 是否加急 */
    @ApiModelProperty("是否加急")
    private Integer isUrgent;

    /** 是否作废 */
    @ApiModelProperty("是否作废")
    private Integer isCancel;

    @ApiModelProperty("是否暂停")
    private Integer isSuspend;

    @ApiModelProperty("是否验货")
    private Integer isInspection;

    @ApiModelProperty("是否转发图片")
    private Integer isForwardImg;

    @ApiModelProperty("是否转发视频")
    private Integer isForwardVideo;

    @ApiModelProperty("是否转发")
    private Integer isForward;

    @ApiModelProperty("是否需要上传细码")
    private Integer isUploadFineCode;

    @ApiModelProperty("暂停开始时间")
    private Date suspendStartTime;

    @ApiModelProperty("暂停结束时间")
    private Date suspendEndTime;

    @ApiModelProperty("暂停时长")
    private Long suspendDuration;

    /** 操作备注 */
    @ApiModelProperty("操作备注")
    private String operationRemark;

    /** 供货商 */
    @ApiModelProperty("供货商")
    private String supplier;

    /** 仓库 */
    @ApiModelProperty("仓库")
    private String warehouse;

    /** 表单名称 */
    @Excel(name = "类型", sort = 20)
    @ApiModelProperty("表单名称")
    private String formName;

    /** 档口 */
    @Excel(name = "档口", sort = 10)
    @ApiModelProperty("档口")
    private String organiseUnit;

    /** 表单类型 */
    @ApiModelProperty("表单类型")
    private Long formType;

    /** 客户名称 */
    @Excel(name = "客户名称", sort = 50)
    @ApiModelProperty("客户名称")
    private String clientName;

    /** 订单编号 */
    @ApiModelProperty("订单编号")
    private String formCode;

    /** 预期付款金额 */
    @ApiModelProperty("预期付款金额")
    private String expectPayment;

    /** 总分支数量 */
    @ApiModelProperty("总分支数量")
    private String totalBranchesQuantity;

    /** 总数量 */
    @ApiModelProperty("总数量")
    private String totalQuantity;

    /** 总邮寄数量 */
    @ApiModelProperty("总邮寄数量")
    private String totalPostQuantity;

    /** 运费 */
    @ApiModelProperty("运费")
    private String freight;

    /** 备注 */
    @Excel(name = "订单备注", sort = 130)
    @ApiModelProperty("备注")
    private String remark;

    /** 联系人及电话 */
    @ApiModelProperty("联系人及电话")
    private String linkManAndPhone;

    /** 地址 */
    @ApiModelProperty("地址")
    private String address;

    /** 销售员 */
    @ApiModelProperty("销售员")
    private String salesman;

    /** 是否有效 */
    @ApiModelProperty("是否有效")
    private Integer isValid;

    /** 是否显示批次号 */
    @ApiModelProperty("是否显示批次号")
    private Integer isShowBatchNo;

    /** 是否显示运费 */
    @ApiModelProperty("是否显示运费")
    private Integer isShowFreight;

    /** 是否显示备注 */
    @ApiModelProperty("是否显示备注")
    private Integer isShowRemark;

    /** 是否显示联系人及电话 */
    @ApiModelProperty("是否显示联系人及电话")
    private Integer isShowLinkManAndPhone;

    /** 是否显示地址 */
    @ApiModelProperty("是否显示地址")
    private Integer isShowAddress;

    /** 是否显示邮寄数量 */
    @ApiModelProperty("是否显示邮寄数量")
    private Integer isShowPostQuantity;

    /** 是否显示价格 */
    @ApiModelProperty("是否显示价格")
    private Integer isShowPrice;

    /** 调整金额 */
    @ApiModelProperty("调整金额")
    private String adjustAmount;

    /** 预付金额 */
    @ApiModelProperty("预付金额")
    private String advanceAmount;

    /** 收款金额 */
    @ApiModelProperty("收款金额")
    private String collectingAmount;

    /** 已收/已付 */
    @ApiModelProperty("已收/已付")
    private String paidInOrOut;

    /** 订单余额 */
    @ApiModelProperty("订单余额")
    private String orderBalance;

    /** 订单云编号 */
    @ApiModelProperty("订单云编号")
    private String orderCloudNumber;

    /** 版本 */
    @ApiModelProperty("版本")
    private Integer version;

    /** 创建者 */
    @ApiModelProperty("创建者")
    private String createBy;

    /** 创建时间 */
    @Excel(name = "创建时间", sort = 60, dateFormat = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /** 更新者 */
    @ApiModelProperty("更新者")
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("更新时间")
    private Date updateTime;

    /** 产品列表 */
    @ApiModelProperty("产品列表")
    private GpProductVo[] productList;

    /** 跟进记录列表 */
    @ApiModelProperty("跟进记录列表")
    private List<GpOrderFlowVo> orderFlowList;

    /** 流入时间 */
    @ApiModelProperty("流入时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date inletTime;

    /** 到期时间 */
    @ApiModelProperty("到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expirationTime;

    /** 完成时间 */
    @ApiModelProperty("完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date processingTime;

    /** 是否可提交 0否 1是 */
    @ApiModelProperty("是否可提交 0否 1是")
    private Integer confirmFlag;

    /** 流转节点配置 */
    @ApiModelProperty("流转节点配置")
    private GpFlowConfig flowConfig;

    /** 去向类型 */
    @ApiModelProperty("去向类型")
    private String destinationType;

    /** 去向车次（物流使用） */
    @ApiModelProperty("去向车次（物流使用）")
    private String destinationNo;

    /** 拿货时间 */
    @Excel(name = "拿货时效", sort = 70)
    @ApiModelProperty("拿货时间")
    private Long pickingUpGoodsTime;

    /** 备货时间 */
    @Excel(name = "备货时效", sort = 80)
    @ApiModelProperty("备货时间")
    private Long stockUpTime;

    /** 发货时间 */
    @Excel(name = "发货时效", sort = 90)
    @ApiModelProperty("发货时间")
    private Long sendOutGoodsTime;

    /** 中转时间 */
    @Excel(name = "中转时效", sort = 100)
    @ApiModelProperty("中转时间")
    private Long transferTime;

    /** 处理时长 */
    @ApiModelProperty("处理时长")
    private Long processingDuration;

    /** 细码状态：0细码正常/1细码异常 */
    @ApiModelProperty("细码状态：0细码正常/1细码异常")
    private String fineCodeStatus;

    /** 物流单状态：0未拍物流单/1已拍物流单 */
    @ApiModelProperty("物流单状态：0未拍物流单/1已拍物流单")
    private String logisticsOrderStatus;

    /** 自提状态：0未提/1已提 */
    @ApiModelProperty("自提状态：0未提/1已提")
    private String selfPickupStatus;

    /** 扫码流程id */
    @ApiModelProperty("扫码流程id")
    private Long orderFlowId;

    /** 细码图片 */
    @ApiModelProperty("细码图片")
    private List<String> fineCodeAnnexList;

    /** 物流单图片 */
    @ApiModelProperty("物流单图片")
    private List<String> logisticsOrderAnnexList;

    /** 子订单id */
    @ApiModelProperty("子订单id")
    private Long subOrderId;

    @ApiModelProperty("红色处理时长")
    private Long redDuration;
    @ApiModelProperty("超时时长")
    private Long overTime;

}
